应该使用哪个 IDE/环境/工具?这是人们在做数据科学项目时最常问的问题之一。可以想到,我们不乏可用的选择——从 R Studio 或 PyCharm 等语言特定的 IDE 到 Sublime Text 或 Atom 等编辑器——选择太多可能会让初学者难以下手。
如果说有什么每个数据科学家都应该使用或必须了解的工具,那非 Jupyter Lab 莫属了(之前也被称为 iPython 笔记本)。Jupyter Lab 很强大,功能多,可共享,并且提供了在同一环境中执行数据可视化的功能。
Jupyter Lab 允许数据科学家创建和共享他们的文档,从代码到全面的报告都可以。它们能帮助数据科学家简化工作流程,实现更高的生产力和更便捷的协作。由于这些以及你将在下面看到的原因,Jupyter Lab 成了数据科学家最常用的工具之一。在以后的课程我们都会将以Jupyter Lab进行演示。
Jupyter Lab(此前被称为 IPython notebook,Jupyter notebook)是一个交互式笔记本,支持运行 40 多种编程语言。Jupyter Lab 的本质是一个 开源的Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。我们可以将其用于创建和共享代码与文档,其使用Python(也有R、Julia、Node等其他语言的内核)进行代码演示、数据分析、可视化、教学的很好的工具,对Python的愈加流行和在AI领域的领导地位有很大的推动作用。
Jupyter Lab是Jupyter的一个拓展,提供了更好的用户体验,例如可以同时在一个浏览器页面打开编辑多个Notebook,Ipython console和terminal终端,并且支持预览和编辑更多种类的文件,如代码文件,Markdown文档,json,yml,csv,各种格式的图片,vega文件(一种使用json定义图表的语言)和geojson(用json表示地理对象),还可以使用Jupyter Lab连接Google Drive等云存储服务,极大得提升了生产力。
其提供了一个环境,你无需离开这个环境,就可以在其中编写你的代码、运行代码、查看输出、可视化数据并查看结果。因此,这是一款可执行端到端的数据科学工作流程的便捷工具,其中包括数据清理、统计建模、构建和训练机器学习模型、可视化数据等等。
当你还处于原型开发阶段时,Jupyter Lab 的作用更是引人注目。这是因为你的代码是按独立单元的形式编写的,而且这些单元是独立执行的。这让用户可以测试一个项目中的特定代码块,而无需从项目开始处执行代码。很多其它 IDE 环境(比如 RStudio)也有其它几种方式能做到这一点,但我个人觉得 Jupyter 的单个单元结构是最好的。
正如上面所描述的Jupyter Lab非常灵活,能为数据科学家提供强大的交互能力和工具。它们甚至允许你运行 Python 之外的其它语言,比如 R、SQL 等。因为它们比单纯的 IDE 平台更具交互性,所以它们被广泛用于以更具教学性的方式展示代码。
在Jetbotmini上安装方法已在3.4.4
现在你已经知道这些笔记本是什么了,现在开始使用吧!要运行你的 Jupyter Lab,首先需要PC连接至Jetbotmini。
在具体学习第五章、第六章亚博课程时,最方便的方式也是通过jupyter lab进行代码的运行和观察。首先我们的Jetbotmini通过WIFI接入了与PC网络的同一局域网内,登陆时只要在谷歌浏览器上输入小车上OLED屏幕上显示的IP地址,再加上:8888即可。例如:http://192.168.2.63:8888。请注意,只能是谷歌浏览器,别的浏览器不好用,甚至登陆不上。登陆密码就是“yahboom”。
如果没有网络环境支持的话我们可以使用Jetbotmini的”无头模式”通过USB连接到PC建立的网络通道,无头模式是默认IP为192.168.55.1,在浏览器上登录http://192.168.55.1:8888,至Jetbotmini的JupyterLab进行使用,如果我们是第一次使用当前的PC环境远程登录至Jetbotmini,我们需要输入密码进行验证,密码也就是我们在3.4.4小节安装JupyterLab时设置的密码,如果你使用的是Yahboom-Jetbotmini我们官方的Jetbotmini出厂镜像的话默认密码就是yahboom,当在此环境下输入过一次密码之后JupyterLab就会记下当前环境,下次就不用在此输入密码,直接登录网址就能进到Jupyter Lab界面马上进行使用。
登录后的界面如下图所示:
JupyterLab界面是一个仪表板,可以访问交互式iPython笔记本,以及Jetbotmini的文件夹结构和进入Ubuntu操作系统的终端窗口。您将看到的第一个视图包括顶部的菜单栏,左侧边栏中的目录树以及最初向“启动器”页面打开的主工作区。
有关所有功能和菜单操作的完整详细信息,请参阅JupyterLab界面:
https://jupyterlab.readthedocs.io/en/stable/user/interface.html
文档。以下是一些在本课程中特别有用的关键功能:
左侧栏中的文件浏览器允许导航Jetson Nano文件结构。双击笔记本或文件会在主工作区中打开它。
本课程中使用的交互式笔记本具有“.ipynb”文件扩展名。从文件浏览器双击笔记本时,它将在主工作区中打开,其过程将开始。笔记本包括文本和代码“单元格”。当代码单元“运行”时,通过单击笔记本顶部的运行按钮或键盘快捷键[CTRL] +[ENTER],将执行单元格中的代码块,并显示输出(如果有)在笔记本电脑的下方。在每个可执行单元格的左侧,括号中有“执行计数”或“提示编号”。如果单元格运行时间超过几秒钟,您会在那里看到一个星号标记,表示单元格尚未完成执行。完成该单元格的处理后,括号中将显示一个数字。
每个正在运行的笔记本的内核是一个运行用户代码的独立进程。从文件浏览器打开笔记本时,内核会自动启动。主菜单栏上的内核菜单包含关闭或重新启动内核的命令,您需要定期使用它们。内核关闭后,不能执行任何代码单元。重新启动内核时,所有内存都会因导入的包,变量赋值等而丢失。
通过右键单击单元格并选择“为输出创建新视图”,可以将任何单元格移动到主工作区中的新窗口选项卡。这样,您可以在仍然观看特定单元格的同时继续向下滚动JupyterLab笔记本。这在包含相机视图的单元格中特别有用!
您可以直接通过Jupyter远程登录在JetbotUbuntu OS 的终端窗口中工作。在Launcher页面中,单击“其他”下的终端图标。要调出Launcher页面,如果它不再可见,请单击左侧栏顶部的“+”图标。
在你考虑添加小部件之前,你需要导入 widgets 软件包:
from ipywidgets import widgets
小部件的基本类型有典型的文本输入小部件、基于输入的小部件和按钮小部件。下面的例子来自 Dominodatalab,给出了交互式小部件的一些外观:
快捷方式是 Jupyter Notebooks 最大的优势之一。当你想运行任意代码块时,只需要按 Ctrl+Enter 就行了。Jupyter Notebooks 提供了很多键盘快捷键,可以帮助我们节省很多时间。
下面是我们手动选择的一些对你的上手会有莫大帮助的快捷方式。我强烈建议你在阅读本文时逐一尝试一下。未来你会离不开它们的!
Jupyter Notebooks 提供了两种不同的键盘输入模式——命令和编辑。命令模式是将键盘和笔记本层面的命令绑定起来,并且由带有蓝色左边距的灰色单元边框表示。编辑模式让你可以在活动单元中输入文本(或代码),用绿色单元边框表示。
你可以分别使用 Esc 和 Enter 在命令模式和编辑模式之间跳跃。现在就试试看吧!
进入命令模式之后( 此时你没有活跃单元),你可以尝试以下快捷键:
Shift+Enter : 运行本单元,选中下个单元
Ctrl+Enter : 运行本单元
Alt+Enter : 运行本单元,在其下插入新单元
Y:单元转入代码状态
M:单元转入markdown状态
A :在上方插入新单元
B:在下方插入新单元
X:剪切选中的单元
Shift +V:在上方粘贴单元
这是 Jupyter Lab 最重要且最出色的功能之一。当我必须写一篇博客文章时,我的代码和评论都会在一个 Jupyter 文件中,我需要首先将它们转换成另一个格式。记住这些笔记本是 json 格式的,这在进行共享时不会很有帮助。我总不能在电子邮件和博客上贴上不同单元块,对不对?
进入「Files」菜单,你会看到「Download As」选项:
你可以用 8种可选格式导出保存你的笔记本。其中最常用的是 .ipynb 文件和 .html 文件。使用 .ipynb 文件可让其他人将你的代码复制到他们的机器上,使用 .html 文件能以网页格式打开(当你需要保存嵌入在笔记本中的图片时会很方便)。
你也可以使用 nbconvert 选项手动将你的笔记本转换成 HTML 或 PDF 等格式。
你也可以使用 jupyterhub,地址:https://github.com/jupyterhub/jupyterhub。其能让你将笔记本托管在它的服务器上并进行多用户共享。很多顶级研究项目都在使用这种方式进行协作。
JupyterLab 是今年二月份推出的,被认为是 Jupyter Notebooks 的进一步发展。其支持更加灵活和更加强大的项目操作方式,但具有和 Jupyter Notebooks 一样的组件。JupyterLab 环境与 Jupyter Notebooks 环境完全一样,但具有生产力更高的体验。
JupyterLab 让你能在一个窗口中排布你的笔记本、终端、文本文件和输出结果工作区!你只需拖放你需要的单元即可。你也可以编辑 Markdown、CSV 和 JSON 等常用文件格式并实时预览修改所造成的影响。
尽管独自工作可能很有趣,但大多数时候你都是团队的一员。在这种情况下,遵循指导原则和最佳实践是很重要的,能确保你的代码和 Jupyter Lab 都有适当的注释,以便与你的团队成员保持一致。这里我列出了一些最佳实践指标,你在 Jupyter Lab 上工作时一定要遵守:
对任何程序员而言都是最重要的事情之一,总是确保你为你的代码添加了适当的注释!
确保你的代码有所需的文档。
考虑一个命名方案并贯彻始终。这能让其他人更容易遵循。
不管你的代码需要什么库,都在你的笔记本起始处导入它们。(并在旁边添加注释说明你载入它们的目的)
确保你的代码有适当的行距。你不要将你的循环和函数放在同一行——否则如果后面要引用它们,会让人抓狂的!
有时候你的文件中有非常大量的代码。看看能不能将你认为不重要的某些代码隐藏起来,之后再引用。这能让你的笔记本看起来整洁清晰,这是非常可贵的。Jupyter还有很多有用又有趣的功能特性,让我们后面的实际课程实践中去慢慢发掘吧!